﻿// Discrete Logging POJ - 2417.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
/*
https://vjudge.net/problem/POJ-2417#author=GPT_zh

给定一个质数 P，2 <= P < 231，一个整数 B，2 <= B < P，和一个整数 N，1 <= N < P，计算模 P 下以基数 B 的离散对数。也就是找到一个整数 L，使得
    BL == N (mod P)
输入
读取若干行输入，每行包含以空格分隔的 P、B、N。
输出
对于每行输入，将计算出的对数打印在单独的一行上。如果有多个解，则打印最小的解；如果没有解，则打印“no solution”。
示例
5 2 1
5 2 2
5 2 3
5 2 4
5 3 1
5 3 2
5 3 3
5 3 4
5 4 1
5 4 2
5 4 3
5 4 4
12345701 2 1111111
1111111121 65537 1111111111



0
1
3
2
0
3
1
2
0
no solution
no solution
1
9584351
462803587

提示
解决这个问题需要利用数论中一个众所周知的结果，这可能是普特南竞赛的预期内容，但不是 ACM 竞赛的预期内容。
这个结果就是费马小定理，它指出对于任意质数 P 和一些其他（相当罕见的）数字，称为基数 B 伪质数。
基数 B 伪质数的一个更罕见的子集，称为卡迈克尔数，对于 2 到 P-1 之间的每个基数都是伪质数。费马小定理的一个推论是对于任意 m
   B(-m) == B(P-1-m) (mod P) .
*/
#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
}

 